#!/bin/bash
#当前发布环境类型
CUR_ENV=$1
DOCKER_NAMES=$(docker ps --format '{{.Names}}')
#判断是否拥有公共服务环境
HAD_CUR_ENV=0
#应用名称
APP_NAME=$2
#是否横向拓展应用，此参数从Jenkins调用时候传进来,no表示不进行横向拓展，yes表示进行横向拓展应用
IS_HORIZONTAL_EXPANSION=$3
#包含路径的jar包
TARGET_JAR=$4
#部署的目标服务器ip
IP=$5
#应用端口
APP_PORT=$6

USER_NAME=jenkins
REMOTE_CMD="sudo  ~/deploy/agent.sh $CUR_ENV $APP_NAME $IS_HORIZONTAL_EXPANSION $IP $APP_PORT $BUILD_NUMBER "

main()
{
	echo "#当前发布环境类型:$CUR_ENV"
	echo "初始化脚本运行环境"
	
	
	echo "检查目标机器是否有$APP_NAME文件夹"
	ssh $USER_NAME@$IP  "ls /home/${USER_NAME}/$CUR_ENV/${APP_NAME}"
	if [ $? -ne 0 ]; then
		echo "文件夹不存在，创建应用目录${CUR_ENV}/$APP_NAME"
		./deploy/dingding.sh '【Jenkins构建通知】:'${JOB_NAME}' - Build #'${BUILD_NUMBER}'\n项目名称:'${JOB_NAME}'\n构建分支:'${BRANCH}'\n构建编号：'${BUILD_NUMBER}'\n构建应用：'${APP_NAME}'\n提交信息：'${CHANGE_LOG}'\n提交者：'${GIT_USER_NAME}'\n构建信息：远程服务器不存在'${APP_NAME}'目录 \n构建状态：failure'
		exit
	else
	
		echo "$CUR_ENV/$APP_NAME存在"
	fi
	echo "传输打好的jar包: $TARGET_JAR   "
	echo  "/home/$USER_NAME/$CUR_ENV/$APP_NAME/"
	scp $TARGET_JAR  jenkins@$IP:"/home/$USER_NAME/${CUR_ENV}/$APP_NAME/"
	if [ $? -ne 0 ];then
		echo "传输jar包失败"
		echo '【Jenkins构建通知】:'${JOB_NAME}' - Build #'${BUILD_NUMBER}'\n项目名称:'${JOB_NAME}'\n构建分支:'${BRANCH}'\n构建编号：'${BUILD_NUMBER}'\n构建应用：'${APP_NAME}'\n提交信息：'${CHANGE_LOG}'\n提交者：'${GIT_USER_NAME}'\n构建信息：传输脚本以及jar包失败 \n构建状态：failure'
		./deploy/dingding.sh '【Jenkins构建通知】:'${JOB_NAME}' - Build #'${BUILD_NUMBER}'\n项目名称:'${JOB_NAME}'\n构建分支:'${BRANCH}'\n构建编号：'${BUILD_NUMBER}'\n构建应用：'${APP_NAME}'\n提交信息：'${CHANGE_LOG}'\n提交者：'${GIT_USER_NAME}'\n构建信息：传输jar包失败 \n构建状态：failure'
		exit
	fi
	ssh $USER_NAME@$IP  "ls /home/$USER_NAME/deploy"
	if [ $? -ne 0 ]; then
		echo "不存在deploy脚本文件夹"
	else
		echo "deploy脚本文件夹存在，删除"
		ssh $USER_NAME@$IP   "rm -rf /home/$USER_NAME/deploy"
	fi
	
	
	echo "端口：$APP_PORT"
	echo "传输发布脚本后执行脚本"
	DEPLOY_DIR=$(pwd)/deploy
	scp -r  $DEPLOY_DIR jenkins@$IP:"/home/$USER_NAME/${CUR_ENV}"
	if [ $? -ne 0 ]; then
		echo "传输脚本"
		echo "$REMOTE_RESULT"
		./deploy/dingding.sh '【Jenkins构建通知】:'${JOB_NAME}' - Build #'${BUILD_NUMBER}'\n项目名称:'${JOB_NAME}'\n构建分支:'${BRANCH}'\n构建编号：'${BUILD_NUMBER}'\n构建应用：'${APP_NAME}'\n提交信息：'${CHANGE_LOG}'\n提交者：'${GIT_USER_NAME}'\n构建信息：传输脚本失败 \n构建状态：failure'
		exit
	else
		echo "传输脚本以及jar包成功"
		ssh $USER_NAME@$IP  "$REMOTE_CMD"
		if [ $? -ne 0 ]; then
			echo "远程agent脚本执行失败"
			./deploy/dingding.sh '【Jenkins构建通知】:'${JOB_NAME}' - Build #'${BUILD_NUMBER}'\n项目名称:'${JOB_NAME}'\n构建分支:'${BRANCH}'\n构建编号：'${BUILD_NUMBER}'\n构建应用：'${APP_NAME}'\n提交信息：'${CHANGE_LOG}'\n提交者：'${GIT_USER_NAME}'\n构建信息：执行远程agent.sh失败 \n构建状态：failure'
			
		fi
	fi
}



main